﻿using System.Collections.Generic;
using GigaSite.Domain.Infrastucture.Misc;
using GigaSite.Domain.Interfaces.Repositories;
using GigaSite.Domain.IoC;

namespace GigaSite.Web.Models.Validators
{
    /// <summary>
    /// Валидатор авторизационной модели
    /// </summary>
    public class LogOnModelValidator: IModelValidator<LogOnModel>
    {
        /// <summary>
        /// Валидирует указанную модель
        /// </summary>
        /// <typeparam name="T">Тип валидируемой модели</typeparam>
        /// <param name="model">Валидируемая модель</param>
        /// <returns>Коллекция ошибок валидации</returns>
        public IList<ModelValidationError> Validate(LogOnModel model)
        {
            var result = new List<ModelValidationError>();

            // Репозиторий
            var repository = Locator.GetService<IUsersRepository>();
            var passwordHash = PasswordUtils.GenerateMD5PasswordHash(model.Password);

            // Проверяем наличие пользователя с таким логином и паролем в бд
            if (repository.GetUserByIdentityAndPasswordHash(model.UserName,passwordHash) == null)
            {
                result.Add(new ModelValidationError(model.UserName,"Не найден пользователь с такой комбинацией логина или пароля"));
            }

            return result;
        }
    }
}